package com.yuju.account.service;

import java.io.IOException;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.yuju.account.model.OrderAccountStatModel;
import com.yuju.model.account.AccountModel;
import com.yuju.account.dao.entity.Account;
import com.yuju.common.PageModel;
import com.yuju.common.core.service.IBaseService;

/**
 * 类名：IAccountService  <br />
 *
 * 功能：
 *
 * @author : jiaokn <br />
 * @Date : 2017年11月27日 上午9:49:57  <br />
 * @version : 1.1 <br />
 */
public interface IAccountService extends IBaseService<AccountModel, Account, String> {
	
	public byte[] expBusinessDailyRpt(AccountModel accountModel)throws IOException;
	public byte[] expCTAccountRpt(AccountModel accountModel)throws IOException;
	
	BigDecimal getCTMoneySum(AccountModel accountModel);
	
	List<AccountModel> getCTReport(AccountModel accountModel);
	PageModel getCTReportPage(AccountModel accountModel, Integer currentPage, Integer rows);
	
	List<AccountModel> listOrderAccountNoPage(AccountModel accountModel);
	
	int getAccountAmountSum(AccountModel accountModel);
	
	public String saveGetId(AccountModel accountModel);
	
	/**
	 * 功能：新增哑房账<br/>
	 *
	 * @author jiaokn
	 * @Date 2017年12月11日 下午4:06:24 <br/>
	 */
	int saveDumpRoomAccount(List<AccountModel> accounts,String orderId);
	
	int saveReserveDepositAccount(String groupId,String hotelId,String hotelCode,String reserveId,BigDecimal money,Byte businessTypeDetail,String remark);
	
	/**
	 * 功能：通过订单号查找账务统计信息<br/>
	 *
	 * @author jiaokn
	 * @Date 2017年12月21日 下午5:30:55 <br/>
	 */
	Map<String, Object> getDetailByOrderId(String orderId);
	
	/**
	 * 功能：客账查询接口<br/>
	 *
	 * @author jiaokn
	 * @Date 2017年12月19日 下午2:32:27 <br/>
	 */
	PageModel listOrderAccount(AccountModel accountModel, Integer currentPage, Integer rows);
	
	/**
	 * 功能：查找预订单的账务信息<br/>
	 *
	 * @author jiaokn
	 * @Date 2017年12月19日 上午10:47:12 <br/>
	 */
	Map<String, Object> listByReserveId(AccountModel accountModel);
	
	/**
	 * 功能：根据多个订单id查询账务<br/>
	 *
	 * @author jiaokn
	 * @Date 2017年12月18日 下午8:08:03 <br/>
	 */
	List<AccountModel> listByOrderIds(List<String> list);
	
	/**
	 * 功能：新增noshow房费<br/>
	 *
	 * @author jiaokn
	 * @Date 2017年12月12日 下午1:41:03 <br/>
	 */
	int saveNoShow(List<AccountModel> accounts);
	/**
	 * 功能：订单退房<br/>
	 *
	 * @author jiaokn
	 * @param empId 
	 * @Date 2017年12月9日 下午5:50:41 <br/>
	 */
	int saveEndSettle(List<AccountModel> list, String empId);
	
	/**
	 * 功能：预订单账务冲调<br/>
	 *
	 * @author jiaokn
	 * @Date 2017年12月9日 下午5:50:57 <br/>
	 */
	String saveReduce(AccountModel accountModelUpdate);
	/**
	 * 功能：订单账务冲调<br/>
	 *
	 * @author jiaokn
	 * @Date 2017年12月9日 下午5:51:13 <br/>
	 */
	int saveCT(AccountModel accountModel);
	/**
	 * 功能：订单账务销售点<br/>
	 *
	 * @author jiaokn
	 * @Date 2017年12月9日 下午5:51:20 <br/>
	 */
	int saveXSD(Map<String, Object> map);
	/**
	 * 功能：挂账<br/>
	 *
	 * @author jiaokn
	 * @Date 2017年12月9日 下午5:51:33 <br/>
	 */
	String saveGZ(AccountModel accountModel);
	
	/**
	 * 功能：预订单新增账务<br/>
	 *
	 * @author jiaokn
	 * @Date 2017年12月9日 下午5:51:39 <br/>
	 */
	String saveReserveAccount(AccountModel accountModel);
	/**
	 * 功能：预订单账务更新<br/>
	 *
	 * @author jiaokn
	 * @Date 2017年12月9日 下午5:51:55 <br/>
	 */
	int updateReserveAccount(AccountModel accountModel);
	
	/**
	 * 功能：订单账务新增<br/>
	 *
	 * @author jiaokn
	 * @Date 2017年12月9日 下午5:52:04 <br/>
	 */
	String saveOrderAccount(AccountModel accountModel);
	/**
	 * 功能：订单账务更新<br/>
	 *
	 * @author jiaokn
	 * @Date 2017年12月9日 下午5:52:12 <br/>
	 */
	int updateOrderAccount(AccountModel accountModel);
	
	/**
	 * 功能：订金转押金<br/>
	 *
	 * @author jiaokn
	 * @Date 2017年12月9日 下午5:52:23 <br/>
	 */
	int saveTransformAccount(String groupId,String hotelId,String hotelCode,String reserveId,String roomOrderId,String roomGuestId,String empId);

	OrderAccountStatModel statOrderAccount(List<AccountModel> list);

}
